/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.AutorDao;
import DAO.CapituloDao;
import DAO.Conexao;
import DAO.LivroDao;
import bean.Autor;
import bean.Capitulo;
import bean.Colecao;
import bean.Livro;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author jorge
 */
@ManagedBean
@SessionScoped
public class CapituloBean implements Serializable{

    /**
     * Creates a new instance of CapituloBean
     */
    public CapituloBean() {
        this.capitulo = new Capitulo();
        this.capituloDao = new CapituloDao();
        this.autorAdicionado = new Autor();
        
        
        
    }
    
    public void novoCapitulo(){
        System.out.println("Novo capitulo criado!");
        this.capitulo = new Capitulo();
        this.capituloDao = new CapituloDao();
        this.autorAdicionado = new Autor();
        this.carregarCapitulos();
    }
    
    public void selecionar() {
        capitulo = capitulos.getRowData();
    }

    
    public String cadastroCapitulo() {
        String resultado = "/cadastros/acaoErro";

        capituloDao = new CapituloDao();


        sucesso = capituloDao.cadastrarCapitulo(capitulo);

        if (sucesso) {
            this.novoCapitulo();
            this.carregarCapitulos();
            return "/cadastros/obras/capitulos/cadastro/cadastroSucesso";

        }
        this.novoCapitulo();
        return resultado;
    }
    
    public String editarCapitulo() {
        String resultado = "/cadastros/acaoErro";

        capituloDao = new CapituloDao();

        sucesso = capituloDao.alterarCapitulo(capitulo);

        if (sucesso) {
            System.out.println("CapituloBean - editarCapitulo - Sucesso!");
            this.novoCapitulo();
            this.carregarCapitulos();
            return "/cadastros/obras/capitulos/editar/edicaoSucesso";

        }
        return resultado;
    }

    public String removerCapitulo() {
        String resultado = "/cadastros/acaoErro";

        capituloDao = new CapituloDao();
        System.out.println("Id do capitulo excluido: " + capitulo.getId());
        sucesso = capituloDao.removerCapitulo(capitulo);

        if (sucesso) {
            this.novoCapitulo();
            this.carregarCapitulos();
            return "/cadastros/acaoSucesso";

        }

        return resultado;
    }
    
    public void addAutor() {
        AutorDao ad = new AutorDao();
        System.out.println("Id autor: "+ autorAdicionado.getId());
        autorAdicionado = ad.consultaAutor(autorAdicionado.getId());
        this.capitulo.addAutor(autorAdicionado);
        this.autorAdicionado = new Autor();
    }
    
   public void removerAutor() {
        boolean remover = this.capitulo.getAutores().remove(this.getAutores().getRowData());
    }

    public DataModel<Autor> getAutores() {

        return new ListDataModel<Autor>(this.capitulo.getAutores());

    }

    
    public void carregarCapitulos() {
        capituloDao = new CapituloDao();
        listaCapitulos = capituloDao.listarCapitulos();
        capitulos = new ListDataModel<Capitulo>(listaCapitulos);
    }
    
    public CapituloDao getCapituloDao() {
        return capituloDao;
    }

    public void setCapituloDao(CapituloDao capituloDao) {
        this.capituloDao = capituloDao;
    }

    public Capitulo getCapitulo() {
        return capitulo;
    }

    public void setCapitulo(Capitulo capitulo) {
        this.capitulo = capitulo;
    }

    public PreparedStatement getPs() {
        return ps;
    }

    public void setPs(PreparedStatement ps) {
        this.ps = ps;
    }

    public boolean isSucesso() {
        return sucesso;
    }

    public void setSucesso(boolean sucesso) {
        this.sucesso = sucesso;
    }

    public Conexao getConexao() {
        return conexao;
    }

    public void setConexao(Conexao conexao) {
        this.conexao = conexao;
    }

    public DataModel<Capitulo> getCapitulos() {
        if(this.capitulos == null){
            this.carregarCapitulos();
        }
        return capitulos;
    }

    public void setCapitulos(DataModel<Capitulo> capitulos) {
        this.capitulos = capitulos;
    }

    public Autor getAutorAdicionado() {
        return autorAdicionado;
    }

    public void setAutorAdicionado(Autor autorAdicionado) {
        this.autorAdicionado = autorAdicionado;
    }    

    public List<Capitulo> getListaCapitulos() {
        if(listaCapitulos == null){
            this.carregarCapitulos();
        }
        return listaCapitulos;
    }

    public void setListaCapitulos(List<Capitulo> listaCapitulos) {
        this.listaCapitulos = listaCapitulos;
    }
    
    
    
    
    private CapituloDao capituloDao;
    private Capitulo capitulo;
    private PreparedStatement ps;
    private boolean sucesso = false;
    private Conexao conexao;
    private List<Capitulo> listaCapitulos;
    private Autor autorAdicionado = new Autor();
    private DataModel<Capitulo> capitulos;

    

    
}
